home *** CD-ROM | disk | FTP | other *** search
- /* Size of ARP hash table */
- #define ARPSIZE 17
-
- /* Lifetime of a valid ARP entry (seconds) */
- #define ARPLIFE (15*60) /* 15 minutes */
- /* Lifetime of a pending ARP entry (seconds) */
- #define PENDTIME 15 /* 15 seconds */
-
- /* ARP definitions (see RFC 826) */
-
- /* Address size definitions */
- #define IPALEN 4 /* Length in bytes of an IP address */
- #define MAXHWALEN 255 /* Maximum length of a hardware address */
-
- /* ARP opcodes */
- #define ARP_REQUEST 1
- #define ARP_REPLY 2
-
- /* Hardware types */
- #define ARP_ETHER 1 /* Assigned to 10 megabit Ethernet */
- #define ARP_EETHER 2 /* Assigned to experimental Ethernet */
- #define ARP_AX25 3 /* Assigned to AX.25 Level 2 */
- #define ARP_PRONET 4 /* Assigned to PROnet token ring */
- #define ARP_CHAOS 5 /* Assigned to Chaosnet */
- #define ARP_ARCNET 7
-
- /* Table of hardware types known to ARP */
- struct arp_type {
- int hwalen; /* Hardware length */
- int iptype; /* Hardware type field for IP */
- int arptype; /* Hardware type field for ARP */
- char *bdcst; /* Hardware broadcast address */
- int (*format)(); /* Function that formats addresses */
- int (*scan)(); /* Reverse of format */
- };
- extern struct arp_type arp_type[];
-
- /* Format of an ARP request or reply packet. From p. 3 */
- struct arp {
- int16 hardware; /* Hardware type */
- int16 protocol; /* Protocol type */
- unsigned char hwalen; /* Hardware address length, bytes */
- unsigned char pralen; /* Length of protocol address */
- int16 opcode; /* ARP opcode (request/reply) */
- char shwaddr[MAXHWALEN]; /* Sender hardware address field */
- int32 sprotaddr; /* Sender Protocol address field */
- char thwaddr[MAXHWALEN]; /* Target hardware address field */
- int32 tprotaddr; /* Target protocol address field */
- };
-
- /* Format of ARP table */
- struct arp_tab {
- struct arp_tab *next; /* Doubly-linked list pointers */
- struct arp_tab *prev;
- int32 ip_addr; /* IP Address, host order */
- int16 hardware; /* Hardware type */
- char *hw_addr; /* Hardware address */
- char state; /* (In)complete */
- #define ARP_PENDING 0
- #define ARP_VALID 1
- struct timer timer; /* Time until aging this entry */
- struct mbuf *pending; /* Queue of datagrams awaiting resolution */
- };
- #define NULLARP (struct arp_tab *)NULL
- extern struct arp_tab *arp_tab[];
-
- struct arp_stat {
- int recv; /* Total number of ARP packets received */
- int badtype; /* Incoming requests for unsupported hardware */
- int badlen; /* Incoming length field(s) didn't match types */
- int inreq; /* Incoming requests for us */
- int replies; /* Replies sent */
- int outreq; /* Outoging requests sent */
- };
-